GtkAccelLabel: Add use-underline property
authorTimm Bäder <mail@baedert.org>
Fri, 16 Jun 2017 13:22:04 +0000 (15:22 +0200)
committerMatthias Clasen <mclasen@redhat.com>
Thu, 20 Jul 2017 01:27:14 +0000 (21:27 -0400)
gtk/gtkaccellabel.c
gtk/gtkaccellabel.h

index 6aed1689bd645a662b4cf5799bb5a802f3a1a8b7..bb5cac80cc6ecfc01f2ea7a869a8eda4c5d7805a 100644 (file)
@@ -115,6 +115,7 @@ enum {
   PROP_ACCEL_CLOSURE,
   PROP_ACCEL_WIDGET,
   PROP_LABEL,
+  PROP_USE_UNDERLINE,
   LAST_PROP
 };
 
@@ -240,6 +241,13 @@ gtk_accel_label_class_init (GtkAccelLabelClass *class)
                          "",
                          GTK_PARAM_READWRITE);
 
+  props[PROP_USE_UNDERLINE] =
+    g_param_spec_boolean ("use-underline",
+                          P_("Use underline"),
+                          P_("If set, an underline in the text indicates the next character should be used for the mnemonic accelerator key"),
+                          FALSE,
+                          GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY);
+
   g_object_class_install_properties (gobject_class, LAST_PROP, props);
 
   gtk_widget_class_set_css_name (widget_class, "accellabel");
@@ -266,6 +274,9 @@ gtk_accel_label_set_property (GObject      *object,
     case PROP_LABEL:
       gtk_accel_label_set_label (accel_label, g_value_get_string (value));
       break;
+    case PROP_USE_UNDERLINE:
+      gtk_accel_label_set_use_underline (accel_label, g_value_get_boolean (value));
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
@@ -293,6 +304,9 @@ gtk_accel_label_get_property (GObject    *object,
     case PROP_LABEL:
       g_value_set_string (value, gtk_accel_label_get_label (accel_label));
       break;
+    case PROP_USE_UNDERLINE:
+      g_value_set_boolean (value, gtk_accel_label_get_use_underline (accel_label));
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
@@ -317,7 +331,6 @@ gtk_accel_label_init (GtkAccelLabel *accel_label)
   priv->text_label = gtk_label_new ("");
   gtk_widget_set_hexpand (priv->text_label, TRUE);
   gtk_label_set_xalign (GTK_LABEL (priv->text_label), 0.0f);
-  gtk_label_set_use_underline (GTK_LABEL (priv->text_label), TRUE);
   priv->accel_label = g_object_new (GTK_TYPE_LABEL,
                                     "css-name", "accelerator",
                                     NULL);
@@ -992,3 +1005,32 @@ gtk_accel_label_get_label (GtkAccelLabel   *accel_label)
 
   return gtk_label_get_label (GTK_LABEL (priv->text_label));
 }
+
+
+void
+gtk_accel_label_set_use_underline (GtkAccelLabel *accel_label,
+                                   gboolean       setting)
+{
+  GtkAccelLabelPrivate *priv = gtk_accel_label_get_instance_private (accel_label);
+
+  g_return_if_fail (GTK_IS_ACCEL_LABEL (accel_label));
+
+  setting = !!setting;
+
+  if (setting != gtk_label_get_use_underline (GTK_LABEL (priv->text_label)))
+    {
+      gtk_label_set_use_underline (GTK_LABEL (priv->text_label), setting);
+
+      g_object_notify_by_pspec (G_OBJECT (accel_label), props[PROP_USE_UNDERLINE]);
+    }
+}
+
+gboolean
+gtk_accel_label_get_use_underline (GtkAccelLabel *accel_label)
+{
+  GtkAccelLabelPrivate *priv = gtk_accel_label_get_instance_private (accel_label);
+
+  g_return_val_if_fail (GTK_IS_ACCEL_LABEL (accel_label), FALSE);
+
+  return gtk_label_get_use_underline (GTK_LABEL (priv->text_label));
+}
index 678b08178ef5eddbd6ee236cf2caff5fc23d7c06..d10004c161ae6ac48184245f8911e350b9167595 100644 (file)
@@ -111,6 +111,14 @@ void      gtk_accel_label_set_label          (GtkAccelLabel   *accel_label,
 GDK_AVAILABLE_IN_3_92
 const char * gtk_accel_label_get_label       (GtkAccelLabel   *accel_label);
 
+GDK_AVAILABLE_IN_3_92
+void      gtk_accel_label_set_use_underline  (GtkAccelLabel   *accel_label,
+                                              gboolean         setting);
+
+GDK_AVAILABLE_IN_3_92
+gboolean  gtk_accel_label_get_use_underline  (GtkAccelLabel   *accel_label);
+
+
 /* private */
 gchar *    _gtk_accel_label_class_get_accelerator_label (GtkAccelLabelClass *klass,
                                                         guint               accelerator_key,